//
//  main.m
//  02_ClassAndObject
//
//  Created by dllo on 16/7/5.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"

int main(int argc, const char * argv[]) {
    
    // 1.快捷键
    // command + 0 : 收起左边栏
    // command + option + 0 : 收起右边栏
    // command + shift + Y : 收起下边栏
    // command + R : 运行
    // command + B : 编译
    // command + Z : 撤销
    // command + shift + Z : 反撤销
    
    // 1.类和对象
    // 类: 一个具有相同特征和行为的事物抽象集合
    // 对象: 类的实例,对象是类的实现.
    // 面向对象的思想,万物都是对象.
    // OOP 面向对象编程 Objet Oriented Programming
    // OOD 面向对象设计 Object-Oriented Design
    
    // 2.Objective-C
    // 与C语言的区别:OC属于C语言的扩展
    // OC有类的概念
    // .mm文件是 C++的文件,在这个文件中可以编写C++代码
    
    // 3.创建OC的实例
    // 1> 消息语法[objc doSomething];
    // 向objc对象去发送一个doSomething的方法,让他去调用
    // 类方法的调用(由类名去调用其+方法)
    // +alloc 开辟内存空间
    NSObject *objc = [NSObject alloc];
    // 实例方法的调用
    // -init
    NSObject *newObjc = [objc init];
    
    // 创建一个Person对象
    Person *per = [[Person alloc]init];
    // 公开的成员可以直接赋值取值
    per->_age = 10;
    NSLog(@"%ld", per->_age);
    // 受保护的成员不能通过->去访问
    
    // id与instancetype的区别
//    instancetype 在作为参数返回值的时候与id是一样的,系统编译器会把id类型转换成instancetype(即当前对象类型)
    // id可以作为变量类型去使用,但instancetype不可以
    id object = [[NSObject alloc] init];
    
    
    
    
    return 0;
}
